Automation systems are used to control the operation of machines and other components in a systematic manner. Typical automation systems usually include equipment from multiple vendors. Each piece of equipment may use vendor-specific programming languages, runtime environments, and protocols. This makes the task of integrating equipment challenging. For example, an automation function designed to execute on equipment from a particular vendor may not be executable on equipment from other vendors. To further complicate system design and integration, there are a number of protocols that the equipment may use for communications or other activities for interfacing with other components of the automation system. With conventional systems, support for these protocols must be “hardcoded” within the automation functions themselves; thus, making the automation functions even more dependent on a particular system implementation.
To reduce the time required to develop and deploy automation functions, it is desired to provide a framework that abstracts the implementation details of the underlying automation system and equipment.